/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package br.com.webcrm.model;

import java.io.Serializable;
import java.util.List;

import javax.persistence.Basic;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.OneToMany;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;

/**
 * 
 * @author Frederiko
 */
@Entity
@Table(name = "Cidades" )
@SequenceGenerator(name = "cidades_idcidade_seq", sequenceName = "cidades_idcidade_seq", allocationSize = 1)
@NamedQueries({
		@NamedQuery(name = "Cidade.findAll", query = "SELECT c FROM Cidade c"),
		@NamedQuery(name = "Cidade.findByICidade", query = "SELECT c FROM Cidade c WHERE c.idCidade = :idCidade"),
		@NamedQuery(name = "Cidade.findByNomeCidade", query = "SELECT c FROM Cidade c WHERE c.nomeCidade = :nomeCidade"),
		@NamedQuery(name = "Cidade.findByUfCidade", query = "SELECT c FROM Cidade c WHERE c.ufCidade = :ufCidade"),
		@NamedQuery(name = "Cidade.findByDddCidade", query = "SELECT c FROM Cidade c WHERE c.dddCidade = :dddCidade") })
public class Cidade implements Serializable {
	private static final long serialVersionUID = 1L;
	@Id
	@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "cidades_idcidade_seq")
	@Column(name = "idcidade", nullable = false)
	private Integer idCidade;
	@Basic(optional = false)
	@Column(name = "nome_cidade", nullable = false, length = 60)
	private String nomeCidade;
	@Basic(optional = false)
	@Column(name = "uf_cidade", nullable = false, length = 2)
	private String ufCidade;
	@Column(name = "ddd_cidade")
	private Integer dddCidade;
	@OneToMany(cascade = CascadeType.ALL, mappedBy = "cidade", fetch = FetchType.LAZY)
	private List<Cep> listaCep;

	public Cidade() {
	}

	public Cidade(Integer idcidade) {
		this.idCidade = idcidade;
	}

	public Cidade(Integer idcidade, String nomeCidade, String ufCidade) {
		this.idCidade = idcidade;
		this.nomeCidade = nomeCidade;
		this.ufCidade = ufCidade;
	}

	public Integer getIdCidade() {
		return idCidade;
	}

	public void setIdcidade(Integer idCidade) {
		this.idCidade = idCidade;
	}

	public String getNomeCidade() {
		return nomeCidade;
	}

	public void setNomeCidade(String nomeCidade) {
		this.nomeCidade = nomeCidade;
	}

	public String getUfCidade() {
		return ufCidade;
	}

	public void setUfCidade(String ufCidade) {
		this.ufCidade = ufCidade;
	}

	public Integer getDddCidade() {
		return dddCidade;
	}

	public void setDddCidade(Integer dddCidade) {
		this.dddCidade = dddCidade;
	}

	public List<Cep> getListaCep() {
		return listaCep;
	}

	public void setListaCep(List<Cep> listaCep) {
		this.listaCep = listaCep;
	}

	@Override
	public int hashCode() {
		int hash = 0;
		hash += (idCidade != null ? idCidade.hashCode() : 0);
		return hash;
	}

	@Override
	public boolean equals(Object object) {
		// TODO: Warning - this method won't work in the case the id fields are
		// not set
		if (!(object instanceof Cidade)) {
			return false;
		}
		Cidade other = (Cidade) object;
		if ((this.idCidade == null && other.idCidade != null)
				|| (this.idCidade != null && !this.idCidade
						.equals(other.idCidade))) {
			return false;
		}
		return true;
	}

	@Override
	public String toString() {
		return "br.com.attende.model.Cidade[idcidade=" + idCidade + "]";
	}

}
